package com.smedi.ismedi.authoritymanagement.core.domain.service;

import com.smedi.ismedi.authoritymanagement.core.domain.aggregatemodel.FrameStructure;
import com.smedi.ismedi.authoritymanagement.core.domain.aggregatemodel.TermRelationshipGroupType;

import java.util.List;

/**
 * @Author: xulinjun
 * @Date: 2021-7-15 16:22
 */
public interface FrameStructureDomainService {
    FrameStructure saveSingleFrameStructure(FrameStructure data);

    FrameStructure saveAllFrameStructure(FrameStructure data);

    FrameStructure queryFrameStructureByRootCode(String rootCode);

    List<FrameStructure> queryChildren(Long structureId);

    <T> void validateMenuStructure(FrameStructure<T> data, List<TermRelationshipGroupType> termRelationshipGroupTypes, boolean isFirstNode);

    void dropChildrenByStructureId(Long structureId, boolean isFirst);

    List<FrameStructure> queryAllChildren();

    List<FrameStructure> queryAllChildrenByStructureId(Long structureId,List<FrameStructure> children);
}
